草庐IT

c++ - CreateFile 和长设备名

全部标签

c - SetupDiGetDeviceRegistryProperty : "The data area passed to a system call is too small" error

我有一个使用SetupAPI在WindowsXP上枚举USB设备的代码:HDEVINFOhDevInfo=SetupDiGetClassDevs(&_DEVINTERFACE_USB_DEVICE,0,0,DIGCF_DEVICEINTERFACE|DIGCF_PRESENT);for(DWORDi=0;;++i){SP_DEVINFO_DATAdevInfo;devInfo.cbSize=sizeof(SP_DEVINFO_DATA);BOOLsucc=SetupDiEnumDeviceInfo(hDevInfo,i,&devInfo);if(GetLastError()==ERRO

windows - 如何创建用于绘图的子矩形设备上下文

我正在使用MFC(但这也适用于Win32)并且我有一个要绘制的View。所以我重写了OnDraw方法。这是一些伪代码,我是这样编码的:voidOnDraw(DC*pDC){foreach(Nodeninnodes){n->DrawOnCanvas(pDC)}}我认为这是一个不错的OO解决方案。但是我遇到了一个问题。我现在想在初始DC周围画一个边界,但我不想让节点知道这一点。我希望节点仍然相对于从0,0开始的完整Canvas大小进行绘制(并且不知道偏移量)。如果我在父窗口中向节点提供有关边框的知识,它看起来很乱。你如何解决这样的问题?如何定义与现有DC相关的新DC?

c - 生成正确的 .DEF 文件以导出非静态函数和 GLOBALS

从aquestionaboutdetectingbadlinkagetoglobalsacrossdllboudaries开始,事实证明我需要修改PostgreSQL项目使用的.DEF文件生成器工具,以便它正确地为全局变量的.DEF条目发出DATA标记。问题我似乎无法使用Microsoft的工具找到一种方法来获得区分全局变量和函数的符号表列表,其中包括未在其定义站点初始化的全局变量。想法?断流方法该工具循环遍历dumpbin/symbols输出以生成.DEF文件。与我习惯的nm不同,dumpbin/symbols似乎不会为每个符号发出一个条目来指示符号类型-函数、已初始化变量、未初始化

windows - 在 Windows 8 下更改无线设备的 MAC 地址

我想在Windows8.1中的无线设备上欺骗MAC地址。我能够做到这一点,但只有特定的MAC地址。我不能输入我想要的MAC地址。有没有办法通过regedit来做到这一点?我已经尝试了很多方法,但我仍然无法创建自己的MAC地址,就像我在WinXP中所做的那样。我有TP-LINKWN722N和IntelProWireless3945ABG无线适配器。 最佳答案 有很多工具可以为您完成这项工作-我使用免费的TechnitiumTMAC(http://www.technitium.com/tmac/index.html#download)。

c++ - crt0 是否加载 msvcrt.dll?

我正在尝试弄清楚标准C函数(如printf())如何在Windows环境中加载到内存中。我知道crt0.obj准备堆栈,调用intmain(intargc,char**argv)然后使用main返回的退出代码退出进程。我还听说C标准函数位于一个名为msvcrt.dll的共享库中。我想知道crt0是否也加载msvcrt.dll或者是否有一个msvcrt.lib也由编译器自动链接。谢谢你,对不起我的英语:) 最佳答案 总会有一个运行时环境,例如msvcr80.dll(适用于Windows变体),在您安装环境时加载,不管它是什么,即MSV

windows - 如何以编程方式为某些 USB 设备禁用 "Enhanced Power Management"?

我正在开发与自定义USB设备交互的软件。该设备将自身呈现为HID设备,软件通过文件I/O与其交互。由于Windows8.1的变化,操作系统不断重启设备,这导致软件出现问题。根据此知识库文章:http://support.microsoft.com/kb/2900614,如果USB设备出现此问题,Microsoft建议禁用增强型电源管理功能,并且在手动执行此操作后问题会消失。现在,我想修改软件的安装程序以禁用我们所有设备的此设置,而不仅仅是特定设备实例。有没有办法做到这一点?是通过WindowsAPI调用,还是通过会影响特定ProductID/VendorID组合的所有实例的注册表设置?

c++ - Windows 虚拟内存和内核模式

我知道在32位架构中,内核模式虚拟内存映射在0x80000000和0xFFFFFFFF之间。它包含一些结构如EPROCESS,ETHREAD...等等,还有当前进程的页面目录和表。虽然尝试获取某个函数的虚拟地址是ntoskrnl让我们说“nt!NtReadFile”,但我发现它映射到内核虚拟地址0x89421130中。我尝试用随机指令在RET之后修补一些nop,当切换到另一个进程上下文时,我发现我输入的指令仍然存在。这是否意味着加载Ntoskrnl的虚拟内存在每个进程虚拟地址空间中保持不变?谢谢。 最佳答案 Doesthatmean

c - 内核如何知道哪些驱动程序属于哪些外设?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭8年前。Improvethisquestion当内核需要向某个外设发送输出时,它如何知道使用哪个驱动程序?

c - 如果进程终止但系统继续运行, WriteFile() 会是原子的吗?

如果我的进程在随机时刻终止但操作系统继续正常运行,Windows会保证对WriteFile的个别调用吗?是原子的(又名全有或全无)?或者我可以获得部分/撕裂的写入?注意:我特意不征求有关如何练习防御性编码的建议。这是一个严格关于MicrosoftWindows操作系统本身行为的问题。要100%完美地一目了然,我们可以并且明确地确实相信用户代码的行为是正常的。没有没有未定义的行为或任何类似的行为。假定所有进程终止都是通过明确定义的行为发生的,例如未处理的异常或调用TerminateProcess,不是内存损坏等。另外,请特别注意这里不需要担心C++析构函数;这是C。我希望所有关于用户代码

c - InitializeCriticalSectionAndSpinCount 最优 SpinCount(用户态)

我不太了解InitializeCriticalSectionAndSpinCount的文档:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683476(v=vs.85).aspx它说“您可以通过选择较小的旋转计数来显着提高性能......”但是,由于等待微调器比等待对象更快,因此让SpinCount尽可能高不是很有意义吗?我错过了什么?谢谢。(我在多线程应用程序使用的CDLL中使用它)这是临界区的代码,被大量线程不断调用:intg_slots[256]={0};...slot=256;EnterCriticalSec